在先說明Spring Boot之前,來聊一下何為Spring?
以下是Spring Framework的架構圖
Spring Framework是由Rod Johnson於2012年所提出,起源於作者Rod Johnson所寫的Expert One-on-One J2EE Design and Development一書,作者對於J2EE技術標準進行省思後提出此框架,鑑於現有J2EE技術過於複雜且龐大的重量級官方框架(EJB),提出一個輕量級、不需特殊容器支援且不相依於特殊規範的Spring Framework。
Spring架構為解決企業應用程式開發的複雜性而建立的架構(如:EJB),替開發Java應用程式提供了全面的基礎架構支援。它提供了依賴植入和「開箱即用」的一些模組,如:Spring MVC、Spring JDBC、Spring Security、Spring AOP、Spring IoC、Spring ORM、Spring Test。這些模組大幅地縮短了應用程式的開發時間,加強了開發應用程式的效率。
Spring框架共有20個模組,依功能分為「核心容器」、「資料存取與整合」、「網路應用程式」、「其它功能」共四大類。
提供Spring Framework的基礎功能
提供讀取Spring Framework設定檔的功能
提供統一表達式語言的擴充套件模組,可以用來查詢、管理執行中的物件,也可以存取陣列內容、屬性值、呼叫物件的方法、邏輯運算與集合,類似的用法像是JSP中的EL寫法。
由JDBC,ORM,OXM,JMS and Transaction等模組構成
提供JDBC相關功能,讓原生Java的JDBC程式變的更容易管理,並且提供宣告式交易管理機制(Transaction)。
提供整合Object Relational Mapping Framework的功能,可以整合JDO(Java Data Objects)、JPA(Java Persistence API)與Hibernate等,Spring ORM也支援宣告式交易管理機制(Transaction)。
Web,Spring MVC,Web-Socket,AOP,Aspects,Messaing,Instrumentation等。
提供Spring Framework的AOP功能,是Spring Framework的重點。
提供整合Web應用程式的功能以及整合各種Web framework(例如Struts)
Spring提供的Web應用程式MVC Framework,讓開發者於Web應用程式內用IoC等機制,並且可以隨時抽換View與Controller元件。
提供整合messaging API和訊息協議提供支援,用來處理訊息資料使用
說了這麼多~ 上面有一堆模組要配置,很麻煩對吧?
Spring Boot的設計初衷是解決Spring各版本設定工作過於繁重的問題,簡化初始架設流程、降低開發難度,使開發人員員需要專注應用程式的功能和業務邏輯實現,而不用在設定上花費太多時間。
Spring Boot使用「預設大於設定」的理念,提供了很多已經整合好的方案,以便程式設計師在開發應用程式時能做到「開箱即用」的設定。
Spring Boot是Spring架構的擴充和自動化,它消除了在Spring中需要進行的XML檔案設定,使得開發變得更快、更高效、更自動化。
Spring Boot 支援用註釋的方式輕鬆實現類別的定義與功能開發、無程式產生和XML設定,新手入門極易上手。
Spring Boot根據在類別路徑中的JAR和類別自動設定Bean,能自動完成大量設定。
Spring Boot提供了大量的Starter來簡化依賴設定。
Spring Boot可以在具備JRE(Java 執行環境)的環境中獨立執行,它內鍵了嵌入式的Tomcat、Jetty、Netty等Servlet容器,專案不用被包裝成WAR格式,可以直接以JAR套件的方式執行。
微服務開發架構Spring Cloud是以Spring Boot為基礎,所以Spring Cloud是相依於Spring Boot的。
它提供了一整套的監控、管理應用程式狀態的功能模組,包含監控應用程式的執行緒資訊、記憶體資訊、應用程式健康狀態等。
Spring Boot其實是要依賴Spring的,並不是全新的架構,它是Spring的自動化。